From db7382981619a9ba0612f632d5512bf59d1d8c21 Mon Sep 17 00:00:00 2001 From: rndr Date: Sun, 11 Jan 2015 07:47:24 +0500 Subject: [PATCH] use release profile for examples build with --release flag --- src/bin/run.rs | 3 +- src/cargo/core/manifest.rs | 7 ---- src/cargo/util/toml.rs | 2 +- tests/test_cargo_bench.rs | 79 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+), 10 deletions(-) diff --git a/src/bin/run.rs b/src/bin/run.rs index 7125b68ea..5124504f1 100644 --- a/src/bin/run.rs +++ b/src/bin/run.rs @@ -51,8 +51,7 @@ pub fn execute(options: Options, shell: &mut MultiShell) -> CliResult let root = try!(find_root_manifest_for_cwd(options.flag_manifest_path)); let env = match (options.flag_release, options.flag_example.is_some()) { - (true, true) => "bench", - (true, false) => "release", + (true, _) => "release", (false, true) => "test", (false, false) => "compile" }; diff --git a/src/cargo/core/manifest.rs b/src/cargo/core/manifest.rs index 76b711488..a8e3d4370 100644 --- a/src/cargo/core/manifest.rs +++ b/src/cargo/core/manifest.rs @@ -196,13 +196,6 @@ impl Profile { } } - pub fn default_example_release() -> Profile { - Profile { - test: false, - .. Profile::default_bench() - } - } - pub fn default_release() -> Profile { Profile { env: "release".to_string(), diff --git a/src/cargo/util/toml.rs b/src/cargo/util/toml.rs index 0d32490fd..71601bfc4 100644 --- a/src/cargo/util/toml.rs +++ b/src/cargo/util/toml.rs @@ -818,7 +818,7 @@ fn normalize(libs: &[TomlLibTarget], let path = ex.path.clone().unwrap_or_else(|| PathValue::String(default(ex))); let profile = merge(Profile::default_example(), &profiles.test); - let profile_release = merge(Profile::default_example_release(), &profiles.release); + let profile_release = merge(Profile::default_release(), &profiles.release); dst.push(Target::example_target(ex.name.as_slice(), &path.to_path(), &profile)); diff --git a/tests/test_cargo_bench.rs b/tests/test_cargo_bench.rs index 3f9ae908f..593d01a18 100644 --- a/tests/test_cargo_bench.rs +++ b/tests/test_cargo_bench.rs @@ -785,3 +785,82 @@ test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured ", running = RUNNING))); }); + +test!(bench_with_examples { + let p = project("testbench") + .file("Cargo.toml", r#" + [package] + name = "testbench" + version = "6.6.6" + authors = [] + + [[example]] + name = "teste1" + + [[bench]] + name = "testb1" + "#) + .file("src/lib.rs", r#" + extern crate test; + use test::Bencher; + + pub fn f1() { + println!("f1"); + } + + pub fn f2() {} + + #[bench] + fn bench_bench1(_b: &mut Bencher) { + f2(); + } + "#) + .file("benches/testb1.rs", " + extern crate testbench; + extern crate test; + + use test::Bencher; + + #[bench] + fn bench_bench2(_b: &mut Bencher) { + testbench::f2(); + } + ") + .file("examples/teste1.rs", r#" + extern crate testbench; + + fn main() { + println!("example1"); + testbench::f1(); + } + "#); + + assert_that(p.cargo_process("bench").arg("-v"), + execs().with_status(0) + .with_stdout(format!("\ +{compiling} testbench v6.6.6 ({url}) +{running} `rustc {dir}{sep}src{sep}lib.rs --crate-name testbench --crate-type lib [..]` +{running} `rustc {dir}{sep}src{sep}lib.rs --crate-name testbench --crate-type lib [..]` +{running} `rustc benches{sep}testb1.rs --crate-name testb1 --crate-type bin \ + [..] --test [..]` +{running} `{dir}{sep}target{sep}release{sep}testb1-[..] --bench` + +running 1 test +test bench_bench2 ... bench: 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +{running} `{dir}{sep}target{sep}release{sep}testbench-[..] --bench` + +running 1 test +test bench_bench1 ... bench: 0 ns/iter (+/- 0) + +test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured + +", + compiling = COMPILING, + running = RUNNING, + dir = p.root().display(), + url = p.url(), + sep = path::SEP).as_slice())); +}); -- 2.30.2